package cn.tedu.config;

import cn.tedu.interceptor.ResourceIntercepter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.servlet.config.annotation.*;

import java.util.List;

/**
 * Springmvc的配置类
 */
@Configuration
@ComponentScan("cn.tedu.controller")
@EnableWebMvc // 该注解标识当前的类是springmvc的配置类，与接口WebMvcConfigurer搭配使用。
@PropertySource("classpath:ignoreUrl.properties") // 该注解标识当前类在加载时需要读取类路径下面的指定文件
public class SpringMvcConfig implements WebMvcConfigurer {
    //TODO Springmvc的功能都定义在了抽象方法中，要使用那个功能，即重写对应的默认方法即可

    // 通过重写功能方法，完成视图解析器的配置
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/jsp/", ".jsp");
    }

    // 获取被处理的路径
    @Value("#{'${ignoreUrl}'.split(',')}")
    private List<String> ignoreUrl;
    // 通过重写功能方法，完成拦截器的配置
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(resourceIntercepter())
                // 对所有路径进行拦截
                .addPathPatterns("/**")
                // 添加例外，也就是所有路径中不进行拦截的资源
                .excludePathPatterns("/css/**","/js/**","/img/**","/fonts/**");
    }

    @Bean
    public ResourceIntercepter resourceIntercepter(){
        return new ResourceIntercepter(ignoreUrl);
    }
    // 开启静态资源的访问  cdsh
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}
